home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / Languages / Chipmunk Basic 3.0.7 / basic.man next >
Encoding:
Text File  |  1994-10-25  |  18.9 KB  |  752 lines  |  [TEXT/ttxt]

  1.     BASIC(1)        chipmunk-basic v3.0             BASIC(1)
  2.  
  3.  
  4.     Chipmunk BASIC - 'BASIC' language interpreter
  5.     
  6.  
  7.     SYNOPSIS    ( UNIX )
  8.  
  9.     basic [ filename ]
  10.  
  11.     DESCRIPTION
  12.  
  13.     Chipmunk basic is an interpreter for the BASIC language. If a
  14.     filename parameter is given, then the named program file is
  15.     loaded and run as a Basic program.  
  16.  
  17.     Basic commands and statements can be entered and interpreted in
  18.     immediate mode or executed as program statements when the Basic
  19.     program is run.  A built-in line number based editor allows
  20.     program input from the console keyboard.  See below for the
  21.     commands the interpreter recognizes.
  22.     
  23.     FLAGS
  24.  
  25.     none
  26.  
  27.     COMMANDS
  28.         
  29.     Standard mumbleSoft Basic Commands:
  30.  
  31.     load STRINGEXPR
  32.  
  33.         Load a program into memory from the named file. The
  34.         program previously in memory is erased.  All
  35.         variables are cleared.  All lines in the file must
  36.         begin with a line number.  Line numbers do not
  37.         need to be in increasing order.
  38.  
  39.  
  40.     save STRINGEXPR
  41.  
  42.         Save the current program to a named file.
  43.  
  44.     new
  45.  
  46.         Erase the program in memory.  All files are closed and
  47.         all variables are cleared.
  48.  
  49.     clear
  50.  
  51.         All  variables are cleared.  All arrays and string
  52.         variables are deallocated.
  53.  
  54.     run { LINENUM }
  55.     run { STRINGEXPR { , LINENUM } }
  56.  
  57.         Begin execution of the program at the first line, or at
  58.         the specified line.  All variables are cleared.  If a
  59.         STRINGEXPR is given then the BASIC program with that name
  60.         file is loaded into memory first.  Program lines are
  61.         executed in line number order.
  62.  
  63.     cont
  64.  
  65.         CONTinue execution of the program on the next statement
  66.         after the statement on which the program stopped execution
  67.         due to a STOP command or an error.
  68.  
  69.     goto LINENUM
  70.  
  71.         This statement will transfer control to the line number
  72.         specified.  If the program is not running, then this
  73.         command will begin execution at the specified line
  74.         without clearing the variables.  An "Undefined line"
  75.         error will occur if LINENUM doesn't exist in the program.
  76.  
  77.     list
  78.         List the whole program.
  79.  
  80.     list 1-3
  81.         List lines 1 to 2
  82.  
  83.     list -2
  84.         List lines up to 1
  85.  
  86.     list 1
  87.         List line 1
  88.     
  89.     list 2-
  90.         List lines from 2 on
  91.  
  92.     merge STRINGEXPR
  93.  
  94.         Load a program into memory.  The previous program
  95.         remains in memory; if a line exists in both programs,
  96.         the newly loaded line is kept.
  97.  
  98.     renum STRINGEXPR VAL { , VAL { , VAL { , VAL} } }
  99.  
  100.         Renumber program lines.  By default, the new sequence
  101.         is 10,20,30,... The first argument is a new initial
  102.         line number; the second argument is the increment
  103.         between line numbers. The third and fourth arguments,
  104.         if present, specify a limiting range of old line numbers
  105.         to renumber.  RENUM can be used to move non-overlapping
  106.         blocks of code.
  107.      
  108.     edit LINENUM
  109.  
  110.         Edit a given line. If the exit from the edit is via a
  111.         cntrl-c then do not change the line.
  112.             i    insert till <return>
  113.             x    delete one char
  114.             A    append to end of line
  115.  
  116.     delete LINENUM - LINENUM
  117.  
  118.         Delete a specified range of lines. If not found then no
  119.         lines will be deleted.  If used inside a program, DEL
  120.         will terminate execution only if it deletes the line on
  121.         which it appears.
  122.  
  123.     exit
  124.     bye
  125.     quit
  126.  
  127.         Terminates the basic interpreter, ending program
  128.         execution and closing all files.
  129.  
  130.  
  131.     STATEMENTS
  132.  
  133.     { let } VAR = EXPR
  134.  
  135.         Assign a value to a variable.  Variable names can be up
  136.         to 31 significant characters, consisting of letters,
  137.         digits, underscores, and an ending dollar sign. 
  138.         Variable names are case-insensitive.  Variables can
  139.         hold real numbers (IEEE double) or strings of up
  140.         to 254 characters.  If the variable name ends with a
  141.         "$" it holds strings, otherwise it holds numbers.  If a
  142.         statement starts with a variable name then an implied
  143.         LET is assumed.
  144.  
  145.     print or '?' VAL | STRINGVAL { { , | ; } VAL ... } { ; }
  146.     print #FNUM, VAL ...
  147.  
  148.         This command will print its parameters. If a
  149.         semi-colon is used between parameters then no spaces
  150.         are inserted between those parameters.  The print
  151.         output is terminated with a carriage return unless the
  152.         parameter list ends with a semi-colon.  If a file
  153.         descriptor is given then output is redirected to the
  154.         given file.
  155.  
  156.         If a
  157.             tab(VAL)
  158.         is found in a print statement, then print output will
  159.         skip to the horizontal position specified by VAL.
  160.  
  161.     input { # FNUM , } { VAR | STRINGVAR } { , VAR ... }
  162.  
  163.     input "prompt"; { VAR | STRINGVAR }
  164.  
  165.         Input from a terminal or from a file. If the input is
  166.         from the terminal then a prompt message can also be
  167.         added.
  168.  
  169.     get STRINGVAR
  170.     
  171.         Gets one character from the console keyboard.  Blocking.
  172.     
  173.     cls
  174.         Clear the terminals screen.  Leaves the cursor in the
  175.         upper left corner.  For Applesoft BASIC fans, the "home"
  176.         command will also do this.
  177.  
  178.     end
  179.  
  180.         Terminates program execution and returns to the command
  181.         prompt.  Not required.
  182.  
  183.     stop
  184.  
  185.         Stops the execution of the program and returns to
  186.         the command prompt.  Prints a "Break..." message.
  187.  
  188.     if EXPR then STATEMENT { : STATEMENT } { : else STATEMENT }
  189.     if EXPR then LINENUM
  190.     if EXPR
  191.  
  192.         The IF statement.  If the condition is true then the
  193.         STATEMENTS after the THEN are executed and the
  194.         statements after the ELSE are skipped.  If the
  195.         condition is false then the statements after the "else"
  196.         are executed instead.  If the item after "then" is a
  197.         line number then a goto is executed.
  198.         
  199.         If the condition is true and there is no THEN on the
  200.         same line, statements are executed until a line
  201.         with an ENDIF is found.  (block IF() ... ENDIF)
  202.  
  203.     for VAR = EXPR to EXPR { step EXPR }
  204.  
  205.         Beginning of a "for next" loop.  It takes a starting
  206.         value, a limit and an optional step argument.  If the
  207.         step value is negative, the variable counts down.  The
  208.         body of the loop is not executed if the end condition
  209.         is true initially.
  210.  
  211.         Example:
  212.             for i=1 to 10 : print i, : next i
  213.             rem prints the numbers from 1 through 10
  214.  
  215.     next { VAR }
  216.  
  217.         End of a "for next" loop.  If the termination
  218.         conditions are met then execution falls through to the
  219.         following statement, otherwise execution returns to the
  220.         statement following the corresponding "for" statement.
  221.         The "next" does not need a variable name parameter.  If
  222.         this is the case the innermost "for" loop is used.
  223.  
  224.     while { EXPR }
  225.  
  226.         Start of a WHILE loop. The loop is repeated until EXPR
  227.         is false. If EXPR is false at loop entry, then the loop
  228.         is not executed at all. A WHILE loop must be
  229.         terminated by a WEND statement.
  230.  
  231.     wend { EXPR }
  232.  
  233.         Terminating statement of a WHILE loop.  If EXPR is true
  234.         then exit the loop.  Only one WEND is allowed for each
  235.         WHILE.  A WHILE-WEND loop without a condition will loop
  236.         forever.
  237.  
  238.     gosub LINENUM
  239.  
  240.         Transfer command to a line number. Save return address
  241.         so that the program can resume execution at the
  242.         statement after the "gosub" command.  The recursion
  243.         depth is limited only by available memory.
  244.  
  245.     return
  246.  
  247.         Returns from the most recently activated subroutine
  248.         call (must have been called by gosub).
  249.  
  250.     on EXPR   goto  LINENUM { , LINENUM ... }
  251.     on EXPR   gosub LINENUM { , LINENUM ... }
  252.     on error goto  LINENUM
  253.  
  254.         This command will execute either a goto or a gosub to
  255.         the specified line number indexed by the value of EXPR.
  256.         
  257.         If the error form is used, only one linenumber is
  258.         allowed.  LINENUM is the line to which control is
  259.         transferred if an error occurs.  A GOTO statement can
  260.         be used to resume execution.
  261.  
  262.     sub NAME ( VAR { , VAR ... } }
  263.  
  264.         Subroutine entry.  May be called by a GOSUB statement
  265.         or by NAME. A SUB subroutine must be exited by a
  266.         RETURN statement.  There should be only one RETURN
  267.         statement per SUB subroutine.  The variables in the
  268.         VAR list become local variables. String and numeric
  269.         arguments are passed by value; array arguments must
  270.         be pre-dimensioned and are passed by reference.
  271.         
  272.         Example:
  273.             110  x = foo (7, j) : rem Pass 7 and j by value.
  274.             ...
  275.             2000 sub foo (x,y,z) : rem z is a local variable
  276.             2010   print x       : rem prints 7 the first time
  277.             2090 return (y+1)    : rem also restores x,y,z
  278.  
  279.     dim VAR( d { , d { , d } } ) { , VAR( d { , d { , d } } ) }
  280.  
  281.         Dimension an array or list of arrays (string or numeric). 
  282.         A maximum of 4 dimensions can be used. The maximum
  283.         dimension size is limited by available memory. Legal
  284.         array subscripts are from 0 up and including the
  285.         dimension specified; d+1 elements are allocated.  All
  286.         arrays must be dimensioned before use and can be
  287.         dimensioned only once in a program.
  288.         
  289.         Example:
  290.             10 dim a(10)
  291.             20 for i=0 to 10
  292.             30   a(i) = i^2
  293.             40 next i
  294.             50 print a(5) : rem should print 25
  295.  
  296.     read VAR { , VAR }
  297.  
  298.         Read data from the DATA statements contained in the
  299.         program. List items can be either string or numeric
  300.         variables. Reading past the end the last DATA statement
  301.         generates an error.
  302.  
  303.     data ITEM { , ITEM }
  304.  
  305.         DATA statements contain the data used in the READ
  306.         statements. Items must be separated by commas.  The
  307.         items may be either numeric or string expressions,
  308.         corresponding to the type of variable being read.
  309.         Reading the wrong kind of object produces a "Type
  310.         mismatch" error.
  311.  
  312.     restore { LINENUM }
  313.  
  314.         The RESTORE statement causes the next READ to use the
  315.         first DATA statement in the program.  If a LINENUM is
  316.         given then the DATA statement on or after that
  317.         particular line is used next.
  318.  
  319.     rem or "`"
  320.  
  321.         A remark or comment statement.  Ignored by the program
  322.         during execution, however a REM statement can be the
  323.         target of a GOTO or GOSUB.
  324.  
  325.     open STRINGEXPR for { input|output|append } as # FNUM
  326.  
  327.         Open a file. The { input|output|append } parameter
  328.         specifies whether the file is to be read, written or
  329.         appended.  If STRINGEXPR is "stdin" for input or
  330.         "stdout" for output then the console will be used
  331.         instead of a file.  A "file not found" error will
  332.         occur if a non-existant file is specified in an OPEN
  333.         for input statement.
  334.  
  335.     close # FNUM
  336.  
  337.         Close a file. Releases the file descriptor and flushes
  338.         out all stored data.
  339.  
  340.     def fnNAME ( VAR { , VAR } ) = EXPR
  341.  
  342.         Define a user definable function.
  343.         
  344.         Example:
  345.             10 def fnplus(x,y) = x+y
  346.             20 print fnplus(3,5) : rem prints 8
  347.  
  348.     { let } mid$( STRINGVAR, EXPR1, EXPR2 ) = STRINGEXPR
  349.  
  350.         Insert STRINGEXPR into STRINGVAR starting at EXPR1 
  351.         for character length EXPR2.
  352.  
  353.     exec(STRINGEXPR)
  354.  
  355.         Executes STRINGEXPR as a statement or command. 
  356.         e.g. exec("print " + "x") will print the value of x.
  357.  
  358.     poke ADDR_EXPR, DATA_EXPR
  359.  
  360.         Poke a byte into a memory location. Unreasonable
  361.         addresses can cause bus-errors.
  362.  
  363.     push VAR { , VAR ... }
  364.  
  365.         Pushes one or more expressions or variables onto an
  366.         internal stack.  Expressions can be returned using the
  367.         POP function; variables can be returned by using the
  368.         POP statement.
  369.     
  370.     pop VAL
  371.  
  372.         POP statement (see also POP function). Pops VAL
  373.         variables off the internal stack, restoring the value
  374.         of those variables to their pushed values.
  375.     
  376.     NUMERIC FUNCTIONS
  377.  
  378.     sgn(VAL)
  379.  
  380.         Returns the sign of the parameter value.  Returns 1 if
  381.         the value is greater than zero , zero if equal to zero.
  382.         -1 if negative.
  383.  
  384.     abs(x)
  385.  
  386.         Returns the absolute value of x.
  387.  
  388.     int(x)
  389.  
  390.         Returns the integer value of x.  Truncates toward zero.
  391.  
  392.     sqr(x)
  393.  
  394.         Returns the square root of x.
  395.  
  396.     log(x)
  397.  
  398.         Returns the natural logarithm of x.
  399.  
  400.     exp(x)
  401.  
  402.         Returns e^x. e=2.7182818...
  403.  
  404.     sin(x)
  405.     cos(x)
  406.     atn(x)
  407.  
  408.         Trigonometric functions: sin, cosine and arctangent. 
  409.  
  410.     pi
  411.     
  412.         Returns pi, 3.14159265358979323... 
  413.  
  414.     rnd(x)
  415.  
  416.         Returns a random number between 1 and int(x)-1.  If x
  417.         is negative then x seeds the random number generator.
  418.         If x is 1, then returns a fraction between 0 and 1.
  419.  
  420.     len(STRINGEXPR)
  421.  
  422.         Returns the length of the string STRINGEXPR.
  423.  
  424.     val(STRINGEXPR)
  425.  
  426.         Value of the expression contained in STRINGEXPR.
  427.         STRINGEXPR may be a string literal, variable, function,
  428.         or expression.
  429.         
  430.         For example, VAL("1+sqr(4)") yields 3.
  431.  
  432.     asc(STRINGEXPR)
  433.  
  434.         Returns the ascii code for the first character of
  435.         STRINGEXPR.  A null string returns zero.
  436.  
  437.     instr(a$, b$ { , VAL } )
  438.  
  439.         Returns the position of the substring b$ in the string a$
  440.         or returns a zero if b$ is not a substring.
  441.         VAL is an optional starting position in a$
  442.  
  443.     eof(FILENUM)
  444.  
  445.         Returns true if the file specified by FILENUM has reached
  446.         the end of the file.
  447.  
  448.     pop
  449.  
  450.         POP function (see also POP statement). Pops one variable
  451.         value off the stack and returns that value (string or
  452.         numeric).
  453.         
  454.         (POP can be used as either a statement (with a
  455.         parameter) or a function (no parameter). Note that the
  456.         POP function, unlike the POP statement, does not
  457.         restore the value of the variable pushed, but only
  458.         returns the pushed value.  This use of the POP
  459.         statement is different from the Applesoft usage.)
  460.  
  461.     peek( ADDR { , VAL } )
  462.  
  463.         Returns the value of the byte in memory at address ADDR.
  464.         If VAL is 2 or 4, returns the value of the 16-bit or
  465.         32-bit word respectively (if correctly aligned).
  466.         If VAL is 8, returns the value of the numeric variable
  467.         located at ADDR.  peek(varptr(x),8) equals x.
  468.  
  469.     varptr( VAR | STRINGVAR )
  470.     
  471.         Returns the memory address of a variable.
  472.     
  473.     erl
  474.  
  475.         Returns the line number of the last error.  Zero if the
  476.         error was in immediate mode.  The variable errorstatus$
  477.         gives the error type.
  478.  
  479.     timer
  480.  
  481.         Returns a numeric value of elapsed of seconds from the
  482.         computers internal clock.
  483.  
  484.     
  485.     STRING FUNCTIONS
  486.  
  487.     x$ + y$
  488.  
  489.         String concatenation.  Result must be 254 characters or less.
  490.     
  491.     chr$(VAL)
  492.  
  493.         Returns the ascii character corresponding to the value
  494.         of VAL.
  495.  
  496.     str$( VAL { , EXPR } )
  497.  
  498.         Returns a string representation corresponding to VAL.
  499.         If EXPR is present then the string is padded to that
  500.         length.
  501.  
  502.     inkey$
  503.  
  504.         Return one character from the keyboard if input is
  505.         available. Returns a zero length string { "" } if no
  506.         keyboard input is available.  Non-blocking.  Can be used
  507.         for keyboard polling.
  508.  
  509.     input$( EXPR { , FILENUM } )
  510.  
  511.         Returns EXPR characters from file FILENUM. If f is not present
  512.         then get input from the console keyboard.
  513.  
  514.     mid$( a$, i { , j } )
  515.  
  516.         Returns a substring of a$ starting at the i'th
  517.         positions and j characters in length. If the second
  518.         parameter is not specified then the substring is taken
  519.         from the start position to the end of a$.
  520.  
  521.     right$(a$, EXPR )
  522.  
  523.         Returns the right EXPR characters of a$.
  524.  
  525.     left$(a$, EXPR )
  526.  
  527.         Returns the left EXPR characters of a$.
  528.  
  529.     field$( STRINGVAL, VAL { , STRINGVAL } )
  530.  
  531.         Returns the n-th field of the first string.  If the
  532.         optional string is present then use the first character
  533.         of that string as the field separator.  The default
  534.         separator is a space.  Similar to UNIX 'awk' fields.
  535.         
  536.         e.g.  field$("11 22 33 44", 3)  returns  "33"
  537.  
  538.     hex$( VAL { , EXPR } )
  539.     bin$( VAL { , EXPR } )
  540.  
  541.         Returns the hexadecimal or binary string representation
  542.         corresponding to VAL.  If EXPR is present then the
  543.         string is padded with zeros to make it that length.
  544.  
  545.     lcase$( STRINGVAL )
  546.  
  547.         Returns STRINGVAL in all lower case characters.
  548.  
  549.     errorstatus$
  550.  
  551.         Returns the error message for the last error.
  552.  
  553.  
  554.     OPERATORS
  555.  
  556.     The following mathematical operators  are available:
  557.  
  558.         ^    exponentiation
  559.         *    multiplication
  560.         /    division
  561.         mod    remainder
  562.         +    addition
  563.         -    subtraction
  564.  
  565.     logical operators: (any non-zero value is true)
  566.  
  567.             not    logical not
  568.  
  569.     bitwise operators:
  570.  
  571.             and    bitwise and
  572.             or    bitwise or
  573.             xor    bitwise exclusive-or
  574.  
  575.     comparison operators:
  576.  
  577.             <=    less than or equal
  578.             <>    not equal to
  579.             >=    greater than or equal
  580.             =    equal
  581.             >    greater than
  582.             <    less than
  583.  
  584.     x$=y$, x$<y$, x$>y$, x$<=y$, x$>=y$, x$<>y$
  585.  
  586.         String comparisons; result is 1 if true, 0 if false.
  587.         
  588.     Operator precedence (highest to lowest):
  589.  
  590.         ( )
  591.         not -{unary_minus} functions
  592.         ^
  593.         * / mod
  594.         + -
  595.         = < > <= >= <>
  596.         and
  597.         or xor
  598.  
  599.     
  600.     UNIX commands and functions:
  601.  
  602.     sys( STRINGVAL )
  603.  
  604.         UNIX system call.  The string parameter is given to
  605.         the shell as a command.
  606.  
  607.     argv$
  608.         Returns the UNIX shell command line arguments.
  609.  
  610.  
  611.     Macintosh commands:
  612.  
  613.     gotoxy VAL, VAL
  614.  
  615.         Set the horizontal and vertical location of the
  616.         text output cursor.  (0,0) is the upper left corner.
  617.  
  618.     moveto VAL, VAL
  619.  
  620.         Sets the (x,y) location of the graphics pen.
  621.  
  622.     lineto VAL, VAL
  623.  
  624.         Draws a line from the current pen location to location
  625.         (x,y) in the graphics window.
  626.  
  627.     window x, y, char_cols, char_lines
  628.  
  629.         Change the text console window position and size.
  630.  
  631.     graphics window x, y, char_cols, char_lines
  632.  
  633.         Change the graphics window position and size.
  634.  
  635.     morse STRINGVAL { , VAL, VAL, VAL, VAL }
  636.  
  637.         Plays morse code through the speaker.
  638.         The parameters are { dot-speed-wpm, volume{0..100},
  639.         word-speed-wpm, frequency_cps }
  640.  
  641.     sound VAL, VAL, VAL 
  642.  
  643.         The parameters are
  644.         { frequency_cps, seconds_duration, volume{0..100} }
  645.     
  646.     say STRINGVAL
  647.  
  648.         Speaks STRINGVAL if the Speech Manager Extension is
  649.         resident.  Try "say a$,200,46,1" for faster speech.
  650.  
  651.     open "SFGetFile" for input  as #FNUM
  652.     open "SFPutFile" for output as #FNUM
  653.  
  654.         Puts up a standard file dialog for the file name.
  655.  
  656.     call EXPR
  657.     
  658.         Calls the 68K code at address EXPR. 
  659.     
  660.     Lots of other undocumented quickdraw and sprite commands.
  661.  
  662.     
  663.     Macintosh functions:
  664.     
  665.     fre
  666.         Returns the amount of memory left for program use. 
  667.     
  668.     date$
  669.         Returns a string corresponding to the current date.
  670.  
  671.     time$
  672.         Returns a string corresponding to the current time.
  673.  
  674.     pos(VAL)
  675.  
  676.         Returns the horizontal position of the text cursor.
  677.         If VAL is negative returns the vertical position.
  678.     
  679.     errorstatus$ also returns the full path name of the program and
  680.         files opened by SFGetFile, under System 7 only, and only
  681.         if the name fits in a string variable.
  682.     
  683.     
  684.     Macintosh menu items:
  685.  
  686.     Open or <cmd>O     will put up a dialog to allow selection
  687.             of a program file to load.  Basic Program file
  688.             names must end with a ".bas" suffix.
  689.  
  690.     Copy        will allow copying picts from the graphics
  691.             window.
  692.     
  693.     <cmd>.         command-period will stop program execution.
  694.  
  695.     Print        Only the graphics window can be printed.
  696.  
  697.  
  698.     CONVENTIONS
  699.  
  700.     EXPR        any expression that evaluates to a numeric value.
  701.     STRINGEXPR    a string expression.
  702.     VAR        a numeric variable.
  703.     STRINGVAR    a string variable.
  704.     
  705.     All program lines must begin with a line number.  A line number
  706.     entered by itself will delete that program line. Using spaces
  707.     (indentation) between the line number and program statements is
  708.     legal.  Line numbers can be between 1 and 2147483647.
  709.     
  710.     Hexadecimal numbers can be entered by preceding them with
  711.     a "0x" as in 0x02ae, or by "&h" as in &h0172.
  712.     
  713.     Multiple statements may be given on one line, separated by
  714.     colons:
  715.  
  716.         10 INPUT X : PRINT X : STOP
  717.  
  718.  
  719.     DIAGNOSTICS
  720.  
  721.     Some errors can be caught by the user program using the "on error
  722.     goto" command. If no error trapping routine has been supplied
  723.     then program execution is terminated and a message is printed
  724.     with the corresponding line number.
  725.  
  726.     Graphics may require that the preferred memory requirements be
  727.     increased.
  728.  
  729.  
  730.     AUTHORS
  731.     
  732.     David Gillespie wrote basic.p 1.0 and the p2c lib.
  733.     Ron Nicholson (rhn@netcom.com) added file i/o and
  734.     did the Macintosh and PowerMac port.  (1990, 94-Aug)
  735.  
  736.     
  737.     BUGS
  738.  
  739.     Many.
  740.  
  741.     Macintosh screen editing will only recognise the last line modified
  742.     before a RETURN or ENTER key.
  743.  
  744.     There are several undocumented graphics and sprite commands
  745.     and keywords.
  746.  
  747.  
  748.     Portions Copyright (C) 1989 Dave Gillespie
  749.     Copyright (C) 1994 Ronald H. Nicholson, Jr., All rights reserved.
  750.     "Applesoft" is probably a trademark of Apple Computer, Inc.
  751.  
  752.